package com.example.springaop2.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class AppConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 参数：自定义拦截器对象.拦截规则（addPathPatterns）.排除规则（excludePathPatterns）
        // 拦截路径： /** 拦截所有的url（当然，这显然是不合理，前端没有拦截，后端的 登录 和 注册 功能，也不需要拦截）
        // 排除路径： 就想上面说的一样，有一些功能是不需要验证的，所有 这个排除路径就是为了这个而诞生的。将不需要拦截的路写在这里面。
        registry.addInterceptor(new LoginIntercept())
                .addPathPatterns("/**")// 拦截 所有的 url
                .excludePathPatterns("/user/login")// 排除（不拦截）登录接口
                .excludePathPatterns("user/reg")// 排除注册接口
                .excludePathPatterns("/login.html")// 排除录页面
                .excludePathPatterns("/reg.html")// 排除册页面
                .excludePathPatterns("/**/*.js")// 排除 页面所需的静态资源 (我们存储资源的路径，一般是二级路径)
                .excludePathPatterns("/**/*.css")
                .excludePathPatterns("/**/*.png")
                .excludePathPatterns("/**/*.jpg");
    }

//    @Override
//    public void configurePathMatch(PathMatchConfigurer configurer) {
//        // 通过 configurer 对象 提供的方法 addPathPrefix（添加路径前缀）
//        configurer.addPathPrefix("api",c -> true);
//        // 前缀为 api，  c->true 表示给 controller 中的所有路由参数（请求的url） 加上前缀。
//    }
}
